home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
AGSMC10.ZIP
/
AGSMC.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1995-02-27
|
24KB
|
1,555 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Boolean BOOLEAN006
Boolean BOOLEAN007
Boolean BOOLEAN008
Boolean BOOLEAN009
DWord TDWORD001(9)
DWord DWORD002
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
Integer INTEGER014
String STRING001
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
String STRING020
String STRING022
String STRING024
Word WORD001
Word WORD002
Word TWORD003(9)
Word WORD004
BigStr BIGSTR001
BigStr BIGSTR002
BigStr BIGSTR003
BigStr BIGSTR004
BigStr BIGSTR005
BigStr BIGSTR006
BigStr BIGSTR009
Declare Function FUNCTION001() BigStr
Declare Function FUNCTION002() String
Declare Function FUNCTION003(String STRING019) String
Declare Function FUNCTION004() String
Declare Function FUNCTION005(Word WORD008) BigStr
Declare Function FUNCTION006(String STRING023) String
Declare Procedure PROC001()
Declare Procedure PROC002(Boolean BOOLEAN010)
Declare Procedure PROC003(BigStr BIGSTR007, Word WORD005)
Declare Procedure PROC004(String STRING021, Word WORD006)
Declare Procedure PROC005()
Declare Procedure PROC006()
Declare Procedure PROC007()
Declare Procedure PROC008(Int INT001)
Declare Procedure PROC009()
Declare Procedure PROC010(Int INT002, Int INT003)
Declare Procedure PROC011(BigStr BIGSTR008, Word WORD007)
Declare Procedure PROC012()
Declare Procedure PROC013()
Declare Procedure PROC014()
Declare Procedure PROC015(BigStr BIGSTR010, Word WORD009)
Declare Procedure PROC016(String STRING025)
;------------------------------------------------------------------------------
RdUNet PcbNode()
WrUNet PcbNode(), "G", UN_Name(), UN_City(), "", ""
STRING013 = ReadLine(PPEPath() + "GROUP.CFG", 1)
STRING015 = ReadLine(PPEPath() + "GROUP.CFG", 2)
STRING014 = ReadLine(PPEPath() + "GROUP.CFG", 3)
STRING016 = ReadLine(PPEPath() + "GROUP.CFG", 4)
INTEGER012 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 5), 10)
STRING017 = ReadLine(PPEPath() + "GROUP.CFG", 6)
INTEGER013 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 7), 10)
BOOLEAN006 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 8), 10)
BOOLEAN007 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 9), 10)
BOOLEAN008 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 10), 10)
BOOLEAN009 = S2I(ReadLine(PPEPath() + "GROUP.CFG", 11), 10)
FClose -1
STRING009 = PPEPath() + "WORK\ORG.DAT"
STRING010 = PPEPath() + "GROUP.LOG"
STRING011 = PPEPath() + "WORK\FREEZE.SEM"
STRING008 = GetToken()
WORD001 = S2I(STRING008, 10)
If ((WORD001 >= 3) && (WORD001 <= 10)) INTEGER006 = WORD001
PROC006()
INTEGER004 = INTEGER011
If (INTEGER004 == 10) INTEGER004 = 0
If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER004))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\ZAP." + String(INTEGER004))) Delete PPEPath() + "WORK\ZAP." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\PVT." + String(INTEGER004))) Delete PPEPath() + "WORK\PVT." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\SWAP." + String(PcbNode()))) Delete PPEPath() + "WORK\SWAP." + String(PcbNode())
Cls
StartDisp 1
PrintLn "@POFF@"
PROC009()
PROC001()
INTEGER014 = Time()
PROC004(" WeLCoMe iNTo THe AEGiS CoRP FuLL SCReeN MuLTI CHaT ! TyPE /? FoR HeLP!", INTEGER011)
CdChkOff
While (1) Do
If (!CDOn() && !OnLocal()) Goto LABEL018
BIGSTR001 = FUNCTION001()
If ((Upper(Left(BIGSTR001, 6)) == "/HELP ") || (Left(BIGSTR001, 3) == "/? ")) Then
SaveScrn
DispFile PPEPath() + "HELP", 0 + 4
CdChkOn
Wait
CdChkOff
StartDisp 1
RestScrn
Continue
Endif
If (Upper(Left(BIGSTR001, 6)) == "/LOCK ") Then
FOpen 1, PPEPath() + "WORK\LOCKED.SEM", 1, 0
FPutLn 1, "Chat is locked !"
FClose 1
STRING008 = "Chat is now locked !"
For WORD001 = 1 To INTEGER006
If (TWORD003(WORD001 - 1)) PROC004(STRING008, WORD001)
Next
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " LOCK THE CHAT"
FClose 7
Continue
Endif
If (Upper(Left(BIGSTR001, 8)) == "/UNLOCK ") Then
If (Exist(PPEPath() + "WORK\LOCKED.SEM")) Delete PPEPath() + "WORK\LOCKED.SEM"
STRING008 = "Chat is now unlocked !"
For WORD001 = 1 To INTEGER006
If (TWORD003(WORD001 - 1)) PROC004(STRING008, WORD001)
Next
Continue
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " UNLOCK THE CHAT"
FClose 7
Endif
If (Upper(Left(BIGSTR001, 5)) == "/WHO ") Then
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " WATCH NODE ACTIVITY"
FClose 7
SaveScrn
CdChkOn
Call STRING015
CdChkOff
Color 15
StartDisp 1
RdUNet PcbNode()
WrUNet PcbNode(), "G", UN_Name(), UN_City(), "", ""
RestScrn
Continue
Endif
If (Upper(Left(BIGSTR001, 6)) == "/EDIT ") Then
GetUser
If (U_Sec < INTEGER013) Then
PROC004("User editor is for sysop only !", INTEGER011)
Goto LABEL001
Endif
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " USES THE USER EDITOR"
FClose 7
SaveScrn
CdChkOn
Call STRING017
CdChkOff
Color 15
StartDisp 1
RdUNet PcbNode()
WrUNet PcbNode(), "G", UN_Name(), UN_City(), "", ""
RestScrn
:LABEL001
Continue
Endif
If (Upper(Left(BIGSTR001, 6)) == "/DOWN ") Then
If (Mid(BIGSTR001, 7, 1) == " ") Then
PROC004("Download a file : /DOWN filename", INTEGER011)
Goto LABEL002
Endif
STRING008 = Right(BIGSTR001, Len(BIGSTR001) - InStr(BIGSTR001, " ")) + " "
STRING008 = Left(STRING008, InStr(STRING008, " ") - 1)
PrintLn
SaveScrn
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " DOWNLOAD " + STRING008
FClose 7
Download STRING008
RdUNet PcbNode()
WrUNet PcbNode(), "G", UN_Name(), UN_City(), "", ""
RestScrn
:LABEL002
Continue
Endif
If (Upper(Left(BIGSTR001, 6)) == "/CALL ") Then
If (Mid(BIGSTR001, 7, 1) == " ") Then
PROC004("Call somenone : /CALL n (n = Node number)", INTEGER011)
Goto LABEL003
Endif
WORD001 = S2I(Mid(BIGSTR001, 7, 1), 10)
If ((WORD001 == 0) || (WORD001 > MaxNode())) Then
PROC004("There is no node " + String(WORD001), INTEGER011)
Goto LABEL003
Endif
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " CALL NODE " + String(WORD001)
FClose 7
RdUNet WORD001
STRING008 = UN_Name() + " has been notified !"
If (Trim(STRING008, " ") == "") Then
PROC004("There is curently nobody on node " + String(WORD001), INTEGER011)
Goto LABEL003
Endif
Broadcast WORD001, WORD001, PCBMac("@USER@") + " wants to chat with you ! Type " + STRING014 + " to answer."
PROC004(STRING008, INTEGER011)
:LABEL003
Continue
Endif
If (Upper(Left(BIGSTR001, 5)) == "/MAC ") Then
STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3)
STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1)
WORD001 = S2I(STRING008, 10)
If (WORD001 == 0) Then
PROC004("Macros : /MAC n MACRO (Record macro n) Or /n (Play macro n). 1 < n < 999", INTEGER011)
Goto LABEL004
Endif
BIGSTR004 = Right(BIGSTR001, Len(BIGSTR001) - 6)
BIGSTR004 = Right(BIGSTR004, Len(BIGSTR004) - InStr(BIGSTR004, " "))
PROC011(BIGSTR004, WORD001)
PROC004("Macro " + String(WORD001) + " recorded !", INTEGER011)
:LABEL004
Continue
Endif
If (Upper(Left(BIGSTR001, 6)) == "/SEND ") Then
STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3)
STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1)
WORD001 = S2I(STRING008, 10)
If (WORD001 == 0) Then
PROC004("Send a broadcast message : /SEND n MSG (n = Node number)", INTEGER011)
Goto LABEL005
Endif
If (WORD001 > MaxNode()) Then
PROC004("There is no node " + String(WORD001), INTEGER011)
Goto LABEL005
Endif
BIGSTR004 = Right(BIGSTR001, Len(BIGSTR001) - 6)
BIGSTR004 = Right(BIGSTR004, Len(BIGSTR004) - InStr(BIGSTR004, " "))
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " SEND BROADCAST TO NODE " + String(WORD001)
FPutLn 7, BIGSTR004
FClose 7
Broadcast WORD001, WORD001, BIGSTR004
PROC004("Broadcast sent !", INTEGER011)
:LABEL005
Continue
Endif
If (Upper(Left(BIGSTR001, 5)) == "/ZAP ") Then
If (BOOLEAN007) Goto LABEL006
PROC004("/ZAP has been disabled by the sysop !", INTEGER011)
Goto LABEL007
:LABEL006
STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3)
STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1)
WORD001 = S2I(STRING008, 10)
If (WORD001 == 0) Then
PROC004("Write for someone else : /ZAP n MESSAGE (n = Window to type in)", INTEGER011)
Goto LABEL007
Endif
WORD002 = TWORD003(WORD001 - 1)
If (WORD002 == 0) Then
PROC004("Nobody to zap in window #" + String(WORD001), INTEGER011)
Goto LABEL007
Endif
RdUNet WORD002
WORD002 = U_RecNum(UN_Name())
GetAltUser WORD002
WORD002 = U_Sec
GetUser
INTEGER009 = U_Sec
If (INTEGER009 <= WORD002) Then
PROC004(PCBMac("@USER@") + ", your security is not high enough to zap #" + String(WORD001) + " ! (" + String(INTEGER009) + "/" + String(WORD002) + ")", WORD001)
Goto LABEL007
Endif
BIGSTR004 = Right(BIGSTR001, Len(BIGSTR001) - 6)
BIGSTR004 = Right(BIGSTR004, Len(BIGSTR004) - InStr(BIGSTR004, " "))
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " ZAP COMMAND TO #" + String(WORD001)
FPutLn 7, BIGSTR004
FClose 7
PROC015(BIGSTR004, WORD001)
:LABEL007
Continue
Endif
If (Upper(Left(BIGSTR001, 6)) == "/PLUG ") Then
If (BOOLEAN008) Goto LABEL008
PROC004("/PLUG has been disabled by the sysop !", INTEGER011)
Goto LABEL009
:LABEL008
STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3)
STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1)
WORD001 = S2I(STRING008, 10)
If (WORD001 == 0) Then
PROC004("Write Directly into alternate window : /PLUG n MSG (n = Window to plug in)", INTEGER011)
Goto LABEL009
Endif
WORD002 = TWORD003(WORD001 - 1)
If (WORD002 == 0) Then
PROC004("Nobody to plug in window #" + String(WORD001), INTEGER011)
Goto LABEL009
Endif
RdUNet WORD002
WORD002 = U_RecNum(UN_Name())
GetAltUser WORD002
WORD002 = U_Sec
GetUser
INTEGER009 = U_Sec
If (INTEGER009 <= WORD002) Then
PROC004(PCBMac("@USER@") + ", your security is not high enough to plug #" + String(WORD001) + " ! (" + String(INTEGER009) + "/" + String(WORD002) + ")", WORD001)
Goto LABEL009
Endif
BIGSTR004 = Right(BIGSTR001, Len(BIGSTR001) - 6)
BIGSTR004 = Right(BIGSTR004, Len(BIGSTR004) - InStr(BIGSTR004, " "))
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " PLUG COMMAND TO #" + String(WORD001)
FPutLn 7, BIGSTR004
FClose 7
PROC003(BIGSTR004, WORD001)
:LABEL009
Continue
Endif
If (Upper(Left(BIGSTR001, 7)) == "/EJECT ") Then
If (BOOLEAN009) Goto LABEL010
PROC004("/EJECT has been disabled by the sysop !", INTEGER011)
Goto LABEL011
:LABEL010
STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3)
STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1)
WORD001 = S2I(STRING008, 10)
If (WORD001 == 0) Then
PROC004("Eject a user from the chat : /EJECT n (n = Window # of user to eject)", INTEGER011)
Goto LABEL011
Endif
WORD002 = TWORD003(WORD001 - 1)
If (WORD002 == 0) Then
PROC004("Nobody to eject in window #" + String(WORD001), INTEGER011)
Goto LABEL011
Endif
RdUNet WORD002
WORD002 = U_RecNum(UN_Name())
GetAltUser WORD002
WORD002 = U_Sec
GetUser
INTEGER009 = U_Sec
If (INTEGER009 <= WORD002) Then
PROC004(PCBMac("@USER@") + ", your security is not high enough to eject #" + String(WORD001) + " ! (" + String(INTEGER009) + "/" + String(WORD002) + ")", WORD001)
Goto LABEL011
Endif
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " EJECT #" + String(WORD001)
FClose 7
If (WORD001 == 10) WORD001 = 0
FOpen 1, PPEPath() + "WORK\EJECT." + I2S(WORD001, 10), 1, 0
FPutLn 1, "Go away !"
FClose 1
:LABEL011
Continue
Endif
If (Left(BIGSTR001, 1) == "/") Then
STRING008 = Mid(BIGSTR001, 1, 10) + " "
STRING008 = Mid(STRING008, 2, InStr(STRING008, " ") - 2)
WORD001 = S2I(STRING008, 10)
If (WORD001 == 0) Goto LABEL012
BIGSTR001 = FUNCTION005(WORD001)
If (BIGSTR001 == "") Continue
Endif
:LABEL012
If (Upper(Left(BIGSTR001, 5)) == "/PVT ") Then
STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3)
STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1)
If (STRING008 == "*") Then
WORD001 = -1
Goto LABEL013
Endif
WORD001 = S2I(STRING008, 10)
:LABEL013
If (WORD001 == 0) Then
PROC004("Send a private message : /PVT n MSG... (n = Window to send message to)", INTEGER011)
Goto LABEL014
Endif
STRING008 = PCBMac("@USER@") + ": "
BIGSTR004 = Right(BIGSTR001, Len(BIGSTR001) - 5)
BIGSTR004 = Right(BIGSTR004, Len(BIGSTR004) - InStr(BIGSTR004, " "))
STRING008 = Left(STRING008 + BIGSTR004, 80)
If (WORD001 == -1) Then
For WORD001 = 1 To INTEGER006
If (TWORD003(WORD001 - 1)) PROC004(STRING008, WORD001)
Next
Endif
If (TWORD003(WORD001 - 1)) Then
PROC004(STRING008, WORD001)
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " PRIVATE TO #" + String(WORD001)
FPutLn 7, STRING008
FClose 7
Goto LABEL014
Endif
PROC004("There is nobody in window #" + String(WORD001), INTEGER011)
:LABEL014
Continue
Endif
If (Upper(Left(BIGSTR001, 6)) == "/SWAP ") Then
If (BOOLEAN006) Goto LABEL015
PROC004("/SWAP has been disabled by the sysop !", INTEGER011)
Goto LABEL017
:LABEL015
STRING008 = Mid(BIGSTR001, InStr(BIGSTR001, " ") + 1, 3)
STRING008 = Mid(STRING008, 1, InStr(STRING008, " ") - 1)
WORD001 = S2I(STRING008, 10)
If (WORD001 == 0) Then
PROC004("SWAP two windows : /SWAP n (n = Window to swap with)", INTEGER011)
Goto LABEL017
Endif
WORD001 = S2I(Mid(BIGSTR001, 7, 2), 10)
If (WORD001 <= INTEGER006) Then
If (TWORD003(WORD001 - 1) == 0) Then
If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER011))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER011)
TWORD003(INTEGER011 - 1) = 0
TWORD003(WORD001 - 1) = PcbNode()
FOpen 1, STRING009, 2, 3
FSeek 1, (INTEGER011 - 1) * 2, 0
FWrite 1, 0, 2
FSeek 1, (WORD001 - 1) * 2, 0
FWrite 1, ToWord(PcbNode()), 2
INTEGER011 = WORD001
PROC002(1)
FClose 1
PROC005()
PROC001()
Goto LABEL016
Endif
WORD002 = TWORD003(WORD001 - 1)
RdUNet WORD002
WORD002 = U_RecNum(UN_Name())
GetAltUser WORD002
WORD002 = U_Sec
GetUser
INTEGER009 = U_Sec
If (INTEGER009 <= WORD002) Then
PROC004(PCBMac("@USER@") + ", your security is not high enough to swap with #" + String(WORD001) + " ! (" + String(INTEGER009) + "/" + String(WORD002) + ")", WORD001)
Goto LABEL016
Endif
If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER011))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER011)
PROC003("", INTEGER011)
INTEGER009 = TWORD003(WORD001 - 1)
FOpen 1, STRING009, 2, 3
FSeek 1, (INTEGER011 - 1) * 2, 0
FWrite 1, TWORD003(WORD001 - 1), 2
FSeek 1, (WORD001 - 1) * 2, 0
FWrite 1, ToWord(PcbNode()), 2
INTEGER011 = WORD001
PROC002(1)
FClose 1
PROC005()
PROC010(INTEGER009, INTEGER011)
PROC001()
:LABEL016
Goto LABEL017
Endif
PROC004("This place is not available !", INTEGER011)
:LABEL017
Continue
Endif
If (BOOLEAN002) Break
If (BIGSTR001 == "") Continue
PROC003(BIGSTR001, INTEGER011)
EndWhile
PROC007()
PROC014()
CdChkOn
AnsiPos 1, 1
End
:LABEL018
STRING008 = PCBMac("@USER@") + " - CARRIER LOST!"
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " - CARRIER LOST !"
FPutLn 7, BIGSTR004
FClose 7
For WORD001 = 1 To INTEGER006
If (TWORD003(WORD001 - 1)) PROC004(STRING008, WORD001)
Next
PROC007()
PROC014()
CdChkOn
AnsiPos 1, 1
End
;------------------------------------------------------------------------------
Function FUNCTION002() String
BigStr BIGSTR006
AnsiPos Len(STRING006) + 1, INTEGER003 + INTEGER002 - 1
BIGSTR002 = STRING006
BOOLEAN003 = 0
BOOLEAN002 = 0
BOOLEAN005 = 0
:LABEL019
If (!CDOn() && !OnLocal()) Return
STRING007 = FUNCTION004()
If (STRING007 <> "") Goto LABEL020
If ((INTEGER014 <> 0) && (Time() > INTEGER014 + 3)) Then
PROC004("", INTEGER011)
INTEGER014 = 0
Endif
INTEGER004 = INTEGER011
If (INTEGER004 == 10) INTEGER004 = 0
If (Exist(PPEPath() + "WORK\READSEM." + String(INTEGER004))) Then
INTEGER007 = GetX()
INTEGER008 = GetY()
PROC002(0)
PROC001()
Delete PPEPath() + "WORK\READSEM." + String(INTEGER004)
AnsiPos INTEGER007, INTEGER008
Endif
STRING007 = FUNCTION004()
If (STRING007 <> "") Goto LABEL020
If (Exist(PPEPath() + "WORK\SWAP." + String(PcbNode()))) Then
If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER011))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER011)
PROC003("", INTEGER011)
INTEGER007 = GetX()
INTEGER008 = GetY()
FOpen 1, PPEPath() + "WORK\SWAP." + String(PcbNode()), 0, 0
FGet 1, INTEGER011
FClose 1
PROC002(0)
PROC001()
Delete PPEPath() + "WORK\SWAP." + String(PcbNode())
AnsiPos INTEGER007, INTEGER008
Endif
STRING007 = FUNCTION004()
If (STRING007 <> "") Goto LABEL020
INTEGER004 = INTEGER011
If (INTEGER004 == 10) INTEGER004 = 0
If (Exist(PPEPath() + "WORK\ZAP." + String(INTEGER004))) Then
FOpen 1, PPEPath() + "WORK\ZAP." + String(INTEGER004), 0, 0
FGet 1, BIGSTR004
BIGSTR004 = ReplaceStr(BIGSTR004, "@ENTER@", Chr(13) + Chr(10))
BIGSTR003 = BIGSTR003 + BIGSTR004
FClose 1
Delete PPEPath() + "WORK\ZAP." + String(INTEGER004)
Endif
STRING007 = FUNCTION004()
If (STRING007 <> "") Goto LABEL020
INTEGER004 = INTEGER011
If (INTEGER004 == 10) INTEGER004 = 0
If (Exist(PPEPath() + "WORK\PVT." + String(INTEGER004))) Then
Color 15
INTEGER007 = GetX()
INTEGER008 = GetY()
FOpen 1, PPEPath() + "WORK\PVT." + String(INTEGER004), 0, 0
FGet 1, STRING012
AnsiPos 1, 1
PrintLn STRING012 + Space(79 - Len(STRING012))
FClose 1
Delete PPEPath() + "WORK\PVT." + String(INTEGER004)
AnsiPos INTEGER007, INTEGER008
Endif
STRING007 = FUNCTION004()
If (STRING007 <> "") Goto LABEL020
INTEGER004 = INTEGER011
If (INTEGER004 == 10) INTEGER004 = 0
If (Exist(PPEPath() + "WORK\EJECT." + String(INTEGER004))) Then
PROC007()
PROC014()
End
Endif
STRING007 = FUNCTION004()
If (STRING007 <> "") Goto LABEL020
For INTEGER009 = 1 To 10
INTEGER004 = INTEGER009
If (INTEGER004 == 10) INTEGER004 = 0
If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER004))) Then
DWORD002 = Crc32(1, PPEPath() + "WORK\CHAT." + String(INTEGER004))
If (DWORD002 <> TDWORD001(INTEGER004)) Then
TDWORD001(INTEGER004) = DWORD002
Color 15
INTEGER007 = GetX()
INTEGER008 = GetY()
FOpen 1, PPEPath() + "WORK\CHAT." + String(INTEGER004), 0, 0
For WORD002 = 1 To INTEGER001
FGet 1, STRING012
AnsiPos 1, WORD002 + 2 + INTEGER001 * (INTEGER009 - 1) + INTEGER009 - 1
If (Trim(STRING012, " ") == "") Then
PrintLn Space(79)
Continue
Endif
PrintLn STRING012 + Space(79 - Len(StripAtx(STRING012)))
Next
FClose 1
AnsiPos INTEGER007, INTEGER008
Endif
Endif
STRING007 = FUNCTION004()
:LABEL020
If (STRING007 <> "") Then
If (Len(STRING007) < 2) Then
If (STRING007 == Chr(27)) Then
BOOLEAN002 = 1
STRING007 = Chr(13)
BOOLEAN005 = 0
Goto LABEL024
Endif
If (STRING007 == Chr(13)) Then
BOOLEAN005 = 1
Goto LABEL024
Endif
If ((Asc(STRING007) > 31) && (Len(BIGSTR002) < 78)) Then
Color 15
Print STRING007
BIGSTR002 = BIGSTR002 + STRING007
Goto LABEL022
Endif
If (((Asc(STRING007) > 31) && (Len(BIGSTR002) == 78)) && BOOLEAN001) Then
For INTEGER009 = Len(BIGSTR002) To 0 Step -1
If (Mid(BIGSTR002, INTEGER009, 1) == " ") Break
Next
If (STRING007 == " ") Then
Goto LABEL024
Endif
If (INTEGER009 == 0) Then
BIGSTR003 = STRING007
Goto LABEL021
Endif
Backup 78 - INTEGER009
Print Space(78 - INTEGER009)
Backup 78 - INTEGER009
BIGSTR003 = Right(BIGSTR002, 78 - INTEGER009) + STRING007
BIGSTR002 = Mid(BIGSTR002, 1, INTEGER009 - 1)
:LABEL021
Goto LABEL024
Endif
:LABEL022
If (STRING007 == Chr(8)) Then
If (Len(BIGSTR002) > 0) Then
Backup 1
Print "@X07 "
Backup 1
BIGSTR002 = Mid(BIGSTR002, 1, Len(BIGSTR002) - 1)
Goto LABEL023
Endif
If (BOOLEAN004) Then
BOOLEAN003 = 1
Goto LABEL024
Endif
Endif
:LABEL023
Continue
Endif
If (STRING007 == "DOWN") Goto LABEL024
Endif
Next
Goto LABEL019
:LABEL024
FUNCTION002 = BIGSTR002
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION001() BigStr
For WORD001 = 1 To INTEGER001
AnsiPos 1, INTEGER003 + WORD001 - 1
ClrEol
Next
STRING001 = ""
STRING002 = ""
STRING003 = ""
STRING004 = ""
STRING005 = ""
:LABEL025
INTEGER002 = 1
If (INTEGER001 > 1) Then
BOOLEAN001 = 1
Else
BOOLEAN001 = 0
Endif
BOOLEAN004 = 0
STRING006 = STRING001
STRING001 = FUNCTION002()
If (BOOLEAN005 || BOOLEAN002) Goto LABEL028
If (INTEGER001 == 1) Goto LABEL028
:LABEL026
INTEGER002 = 2
If (INTEGER001 > 2) Then
BOOLEAN001 = 1
Else
BOOLEAN001 = 0
Endif
BOOLEAN004 = 1
STRING006 = STRING002
STRING002 = FUNCTION002()
If (BOOLEAN003) Goto LABEL025
If (BOOLEAN005 || BOOLEAN002) Goto LABEL028
If (INTEGER001 == 2) Goto LABEL028
:LABEL027
INTEGER002 = 3
If (INTEGER001 > 2) Then
BOOLEAN001 = 1
Else
BOOLEAN001 = 0
Endif
BOOLEAN004 = 1
STRING006 = STRING003
STRING003 = FUNCTION002()
If (BOOLEAN003) Goto LABEL026
If (BOOLEAN005 || BOOLEAN002) Goto LABEL028
If (INTEGER001 == 3) Goto LABEL028
INTEGER002 = 4
BOOLEAN001 = 0
BOOLEAN004 = 1
STRING006 = STRING004
STRING004 = FUNCTION002()
If (BOOLEAN003) Goto LABEL027
If (BOOLEAN005 || BOOLEAN002) Goto LABEL028
:LABEL028
If (BOOLEAN002) Then
FUNCTION001 = ""
Else
STRING001 = FUNCTION003(STRING001)
STRING002 = FUNCTION003(STRING002)
STRING003 = FUNCTION003(STRING003)
STRING004 = FUNCTION003(STRING004)
STRING005 = FUNCTION003(STRING005)
FUNCTION001 = STRING001
If (STRING002 <> "") Then
FUNCTION001 = FUNCTION001 + Chr(13) + Chr(10) + STRING002
If (STRING003 <> "") Then
FUNCTION001 = FUNCTION001 + Chr(13) + Chr(10) + STRING003
If (STRING004 <> "") Then
FUNCTION001 = FUNCTION001 + Chr(13) + Chr(10) + STRING004
If (STRING005 <> "") Then
FUNCTION001 = FUNCTION001 + Chr(13) + Chr(10) + STRING005
Endif
Endif
Endif
Endif
Endif
EndFunc
;------------------------------------------------------------------------------
Procedure PROC001()
For WORD002 = 1 To INTEGER006
If (TWORD003(WORD002 - 1)) Then
If (WORD002 <> INTEGER011) Then
RdUNet TWORD003(WORD002 - 1)
AnsiPos 1, (WORD002 - 1) * INTEGER001 + 1 + WORD002
Print STRING013
PROC008((WORD002 - 1) * INTEGER001 + 1 + WORD002)
AnsiPos 6, (WORD002 - 1) * INTEGER001 + 1 + WORD002
Print STRING016 + " @X0F" + String(WORD002) + " - " + FUNCTION006(UN_Name()) + " " + STRING016
Goto LABEL029
Endif
AnsiPos 1, (WORD002 - 1) * INTEGER001 + 1 + WORD002
Print STRING013
PROC008((WORD002 - 1) * INTEGER001 + 1 + WORD002)
AnsiPos 6, (WORD002 - 1) * INTEGER001 + 1 + WORD002
Print STRING016 + " @X0F" + String(WORD002) + " - " + FUNCTION006(PCBMac("@USER@")) + " " + STRING016
:LABEL029
Continue
Endif
AnsiPos 1, (WORD002 - 1) * INTEGER001 + 1 + WORD002
Print STRING013
INTEGER009 = (WORD002 - 1) * INTEGER001 + 2 + WORD002
While (((1 < 0) && (INTEGER009 >= (WORD002 - 1) * INTEGER001 + 2 + WORD002 + INTEGER001 - 1)) || ((1 >= 0) && (INTEGER009 <= (WORD002 - 1) * INTEGER001 + 2 + WORD002 + INTEGER001 - 1))) Do
AnsiPos 1, INTEGER009
ClrEol
INTEGER009 = INTEGER009 + 1
EndWhile
Next
EndProc
;------------------------------------------------------------------------------
Procedure PROC002(Boolean BOOLEAN010)
If (!BOOLEAN010) FOpen 1, STRING009, 0, 3
WORD004 = 0
FSeek 1, 0, 0
For WORD002 = 1 To INTEGER006
FRead 1, WORD001, 2
If (WORD001 <> 0) Then
TWORD003(WORD002 - 1) = WORD001
If (WORD001 == PcbNode()) INTEGER011 = WORD002
Inc WORD004
Continue
Endif
TWORD003(WORD002 - 1) = 0
Next
If (!BOOLEAN010) FClose 1
EndProc
;------------------------------------------------------------------------------
Procedure PROC003(BigStr BIGSTR007, Word WORD005)
INTEGER004 = WORD005
If (INTEGER004 == 10) INTEGER004 = 0
FCreate 1, PPEPath() + "WORK\CHAT." + String(INTEGER004), 1, 3
FPutLn 1, BIGSTR007
FClose 1
FAppend 7, STRING010, 1, 0
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>")
FPutLn 7, BIGSTR007
FClose 7
EndProc
;------------------------------------------------------------------------------
Procedure PROC005()
For WORD002 = 1 To INTEGER006
If (TWORD003(WORD002 - 1) && (WORD002 <> INTEGER011)) Then
INTEGER004 = WORD002
If (INTEGER004 == 10) INTEGER004 = 0
FCreate 1, PPEPath() + "WORK\READSEM." + String(INTEGER004), 1, 0
FPutLn 1, "OrgFile changed... Reread requested."
FClose 1
Endif
Next
EndProc
;------------------------------------------------------------------------------
Procedure PROC006()
If (Exist(STRING009)) Goto LABEL031
If (Exist(STRING011)) Then
PrintLn "@X0FPlease wait, a user on other node is creating group chat..."
PrintLn "@X0FPress Esc to quit or wait for availability..."
PrintLn
Print "@X0F10"
INTEGER009 = 10
INTEGER010 = Time()
While (1) Do
If (Exist(STRING011)) Then
If (Time() >= INTEGER010 + 10) Break
If (INTEGER009 <> INTEGER010 + 10 - Time()) Then
INTEGER009 = INTEGER010 + 10 - Time()
Print "·" + String(INTEGER009)
STRING007 = Inkey()
If (STRING007 == Chr(27)) End
Endif
EndWhile
Endif
If (Exist(STRING011)) Then
PrintLn "·@X0CTimeout!"
PrintLn
PrintLn "@X0FCome back when the group chat is created..."
End
Endif
Endif
If (Exist(STRING009)) Goto LABEL031
PROC012()
If (INTEGER006 == 0) Then
INTEGER010 = 3
:LABEL030
InputInt "How many users (from 3 to 10) will be allowed ", INTEGER010, 15
PrintLn
If ((INTEGER010 > 10) || ((INTEGER010 < 3) && (INTEGER010 <> 0))) Goto LABEL030
If (INTEGER010 == 0) Then
PROC013()
End
Endif
INTEGER006 = INTEGER010
Endif
INTEGER011 = 1
FCreate 1, STRING009, 2, 3
FWrite 1, ToWord(PcbNode()), 2
For INTEGER009 = 2 To INTEGER006
FWrite 1, 0, 2
Next
PROC002(1)
FClose 1
PROC013()
Goto LABEL032
:LABEL031
INTEGER010 = FileInf(STRING009, 4)
INTEGER006 = INTEGER010 / 2
FOpen 1, STRING009, 2, 3
FSeek 1, 0, 0
For WORD002 = 1 To INTEGER006
FRead 1, WORD001, 2
If ((WORD001 == 0) || (WORD001 == PcbNode())) Break
Next
INTEGER005 = WORD002
If (WORD002 == INTEGER006 + 1) Then
FClose 1
DispFile PPEPath() + "FULL", 0 + 4
PROC016(U_Name() + " knock at the door, but the chat is full!")
End
Endif
PROC002(1)
If (Exist(PPEPath() + "WORK\LOCKED.SEM")) Then
DispFile PPEPath() + "LOCKED", 0 + 4
PROC016(U_Name() + " knock at the door, but the chat is locked!")
End
Endif
FAppend 7, STRING010, 1, 0
FPutLn 7, " --- " + String(Date()) + " - " + String(Time()) + " ---"
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " ENTERS THE MULTICHAT IN WINDOW #" + String(INTEGER005)
FClose 7
INTEGER011 = INTEGER005
FSeek 1, (INTEGER011 - 1) * 2, 0
FWrite 1, ToWord(PcbNode()), 2
PROC002(1)
FClose 1
PROC005()
:LABEL032
EndProc
;------------------------------------------------------------------------------
Procedure PROC007()
FAppend 7, STRING010, 1, 0
FPutLn 7, " --- " + String(Date()) + " - " + String(Time()) + " ---"
FPutLn 7, PCBMac(" -*- @USER@ -------------------*>") + " LEAVES THE MULTICHAT"
FClose 7
FOpen 1, STRING009, 2, 3
FSeek 1, (INTEGER011 - 1) * 2, 0
FWrite 1, 0, 2
FClose 1
INTEGER004 = INTEGER011
If (INTEGER004 == 10) INTEGER004 = 0
If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER004))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\ZAP." + String(INTEGER004))) Delete PPEPath() + "WORK\ZAP." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\PVT." + String(INTEGER004))) Delete PPEPath() + "WORK\PVT." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\READSEM." + String(INTEGER004))) Delete PPEPath() + "WORK\READSEM." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\EJECT." + String(INTEGER004))) Delete PPEPath() + "WORK\EJECT." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\SWAP." + String(PcbNode()))) Delete PPEPath() + "WORK\SWAP." + String(PcbNode())
PROC005()
PROC002(0)
If (WORD004 == 0) Then
Delete STRING009
For INTEGER004 = 0 To 9
If (Exist(PPEPath() + "WORK\CHAT." + String(INTEGER004))) Delete PPEPath() + "WORK\CHAT." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\ZAP." + String(INTEGER004))) Delete PPEPath() + "WORK\ZAP." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\PVT." + String(INTEGER004))) Delete PPEPath() + "WORK\PVT." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\READSEM." + String(INTEGER004))) Delete PPEPath() + "WORK\READSEM." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\EJECT." + String(INTEGER004))) Delete PPEPath() + "WORK\EJECT." + String(INTEGER004)
If (Exist(PPEPath() + "WORK\SWAP." + String(INTEGER004))) Delete PPEPath() + "WORK\SWAP." + String(INTEGER004)
Next
If (Exist(PPEPath() + "WORK\LOCKED.SEM")) Delete PPEPath() + "WORK\LOCKED.SEM"
Endif
EndProc
;------------------------------------------------------------------------------
Function FUNCTION003(String STRING019) String
Int INT001
STRING019 = ReplaceStr(STRING019, "@AUTOMORE", "@automore")
STRING019 = ReplaceStr(STRING019, "@BEEP", "@beep")
STRING019 = ReplaceStr(STRING019, "@CLREOL", "@clreol")
STRING019 = ReplaceStr(STRING019, "@CLS", "@cls")
STRING019 = ReplaceStr(STRING019, "@DELAY", "@delay")
STRING019 = ReplaceStr(STRING019, "@DELAY", "@delay")
STRING019 = ReplaceStr(STRING019, "@MORE", "@more")
STRING019 = ReplaceStr(STRING019, "@PAUSE", "@pause")
STRING019 = ReplaceStr(STRING019, "@POFF", "@poff")
STRING019 = ReplaceStr(STRING019, "@PON", "@pon")
STRING019 = ReplaceStr(STRING019, "@POS", "@pos")
STRING019 = ReplaceStr(STRING019, "@QOFF", "@qoff")
STRING019 = ReplaceStr(STRING019, "@QON", "@qon")
STRING019 = ReplaceStr(STRING019, "@WAIT", "@wait")
STRING019 = ReplaceStr(STRING019, "@WHO", "@who")
FUNCTION003 = STRING019
EndFunc
;------------------------------------------------------------------------------
Procedure PROC008(Int INT001)
If (WORD004 > INTEGER012) Goto LABEL033
STRING008 = ScrText(1, INT001, 79, 1)
AnsiPos 1, INT001
Print "@X08" + StripAtx(STRING008)
Delay 1
AnsiPos 1, INT001
Print "@X07" + StripAtx(STRING008)
Delay 1
AnsiPos 1, INT001
Print "@X0F" + StripAtx(STRING008)
Delay 1
AnsiPos 1, INT001
Print "@X07" + StripAtx(STRING008)
Delay 1
AnsiPos 1, INT001
Print "@X08" + StripAtx(STRING008)
Delay 1
AnsiPos 1, INT001
Print STRING008
:LABEL033
EndProc
;------------------------------------------------------------------------------
Procedure PROC009()
Select Case (INTEGER006)
Case 3
AnsiPos 1, 2
PrintLn STRING013
AnsiPos 1, 7
PrintLn STRING013
AnsiPos 1, 12
PrintLn STRING013
AnsiPos 1, 17
PrintLn STRING013
INTEGER001 = 4
INTEGER003 = 18
Case 4
AnsiPos 1, 2
PrintLn STRING013
AnsiPos 1, 6
PrintLn STRING013
AnsiPos 1, 10
PrintLn STRING013
AnsiPos 1, 14
PrintLn STRING013
AnsiPos 1, 18
PrintLn STRING013
INTEGER001 = 3
INTEGER003 = 19
Case 5
AnsiPos 1, 2
PrintLn STRING013
AnsiPos 1, 5
PrintLn STRING013
AnsiPos 1, 8
PrintLn STRING013
AnsiPos 1, 11
PrintLn STRING013
AnsiPos 1, 14
PrintLn STRING013
AnsiPos 1, 17
PrintLn STRING013
INTEGER001 = 2
INTEGER003 = 18
Case 6
AnsiPos 1, 2
PrintLn STRING013
AnsiPos 1, 5
PrintLn STRING013
AnsiPos 1, 8
PrintLn STRING013
AnsiPos 1, 11
PrintLn STRING013
AnsiPos 1, 14
PrintLn STRING013
AnsiPos 1, 17
PrintLn STRING013
AnsiPos 1, 20
PrintLn STRING013
INTEGER001 = 2
INTEGER003 = 21
Case 7
AnsiPos 1, 2
PrintLn STRING013
AnsiPos 1, 4
PrintLn STRING013
AnsiPos 1, 6
PrintLn STRING013
AnsiPos 1, 8
PrintLn STRING013
AnsiPos 1, 10
PrintLn STRING013
AnsiPos 1, 12
PrintLn STRING013
AnsiPos 1, 14
PrintLn STRING013
AnsiPos 1, 16
PrintLn STRING013
INTEGER001 = 1
INTEGER003 = 17
Case 8
AnsiPos 1, 2
PrintLn STRING013
AnsiPos 1, 4
PrintLn STRING013
AnsiPos 1, 6
PrintLn STRING013
AnsiPos 1, 8
PrintLn STRING013
AnsiPos 1, 10
PrintLn STRING013
AnsiPos 1, 12
PrintLn STRING013
AnsiPos 1, 14
PrintLn STRING013
AnsiPos 1, 16
PrintLn STRING013
AnsiPos 1, 18
PrintLn STRING013
INTEGER001 = 1
INTEGER003 = 19
Case 9
AnsiPos 1, 2
PrintLn STRING013
AnsiPos 1, 4
PrintLn STRING013
AnsiPos 1, 6
PrintLn STRING013
AnsiPos 1, 8
PrintLn STRING013
AnsiPos 1, 10
PrintLn STRING013
AnsiPos 1, 12
PrintLn STRING013
AnsiPos 1, 14
PrintLn STRING013
AnsiPos 1, 16
PrintLn STRING013
AnsiPos 1, 18
PrintLn STRING013
AnsiPos 1, 20
PrintLn STRING013
INTEGER001 = 1
INTEGER003 = 21
Case 10
AnsiPos 1, 2
PrintLn STRING013
AnsiPos 1, 4
PrintLn STRING013
AnsiPos 1, 6
PrintLn STRING013
AnsiPos 1, 8
PrintLn STRING013
AnsiPos 1, 10
PrintLn STRING013
AnsiPos 1, 12
PrintLn STRING013
AnsiPos 1, 14
PrintLn STRING013
AnsiPos 1, 16
PrintLn STRING013
AnsiPos 1, 18
PrintLn STRING013
AnsiPos 1, 20
PrintLn STRING013
AnsiPos 1, 22
PrintLn STRING013
INTEGER001 = 1
INTEGER003 = 23
End Select
EndProc
;------------------------------------------------------------------------------
Procedure PROC004(String STRING021, Word WORD006)
INTEGER010 = WORD006
If (INTEGER010 == 10) INTEGER010 = 0
FCreate 1, PPEPath() + "WORK\PVT." + I2S(INTEGER010, 10), 1, 0
FPutLn 1, STRING021
FClose 1
INTEGER010 = INTEGER011
If (INTEGER010 == 10) INTEGER010 = 0
If (INTEGER011 <> WORD006) Then
FCreate 1, PPEPath() + "WORK\PVT." + I2S(INTEGER010, 10), 1, 0
FPutLn 1, STRING021
FClose 1
Endif
EndProc
;------------------------------------------------------------------------------
Procedure PROC010(Int INT002, Int INT003)
FCreate 1, PPEPath() + "WORK\SWAP." + String(INT002), 1, 0
FPutLn 1, INT003
FClose 1
EndProc
;------------------------------------------------------------------------------
Function FUNCTION004() String
BigStr BIGSTR008
If (BIGSTR003 == "") Then
STRING007 = Inkey()
Else
STRING007 = Left(BIGSTR003, 1)
BIGSTR003 = Mid(BIGSTR003, 2, Len(BIGSTR003) - 1)
Endif
FUNCTION004 = STRING007
EndFunc
;------------------------------------------------------------------------------
Procedure PROC011(BigStr BIGSTR008, Word WORD007)
STRING008 = I2S(Crc32(0, U_Name()), 16)
If (Exist(PPEPath() + "DATA\" + STRING008 + ".DAT")) Goto LABEL034
Copy PPEPath() + "DATA\DEFAULT.DAT", PPEPath() + "DATA\" + STRING008 + ".DAT"
Goto LABEL035
:LABEL034
FOpen 1, PPEPath() + "DATA\" + STRING008 + ".DAT", 0, 0
:LABEL035
If (Exist(PPEPath() + "WORK\TEMP.$$$")) Delete PPEPath() + "TEMP.$$$"
FCreate 2, PPEPath() + "WORK\TEMP.$$$", 1, 0
BIGSTR008 = ReplaceStr(BIGSTR008, Chr(13) + Chr(10), "@ENTER@")
For WORD001 = 1 To WORD007 - 1
FGet 1, BIGSTR005
FPutLn 2, BIGSTR005
Next
FPutLn 2, BIGSTR008
FGet 1, BIGSTR005
If (Ferr(1)) Goto LABEL036
While (1) Do
FGet 1, BIGSTR005
If (Ferr(1)) Break
FPutLn 2, BIGSTR005
EndWhile
:LABEL036
FClose 1
FClose 2
Delete PPEPath() + "DATA\" + STRING008 + ".DAT"
Rename PPEPath() + "WORK\TEMP.$$$", PPEPath() + "DATA\" + STRING008 + ".DAT"
EndProc
;------------------------------------------------------------------------------
Function FUNCTION005(Word WORD008) BigStr
BigStr BIGSTR010
STRING008 = I2S(Crc32(0, U_Name()), 16)
If (Exist(PPEPath() + "DATA\" + STRING008 + ".DAT")) Goto LABEL037
Copy PPEPath() + "DATA\DEFAULT.DAT", PPEPath() + "DATA\" + STRING008 + ".DAT"
:LABEL037
BIGSTR005 = ReadLine(PPEPath() + "DATA\" + STRING008 + ".DAT", WORD008)
FClose -1
If (BIGSTR005 == "") Then
PROC004(String(WORD008) + ": Empty macro", INTEGER011)
Endif
FUNCTION005 = ReplaceStr(BIGSTR005, "@ENTER@", Chr(13) + Chr(10))
EndFunc
;------------------------------------------------------------------------------
Procedure PROC015(BigStr BIGSTR010, Word WORD009)
INTEGER010 = WORD009
If (INTEGER010 == 10) INTEGER010 = 0
FCreate 1, PPEPath() + "WORK\ZAP." + String(INTEGER010), 1, 0
BIGSTR010 = ReplaceStr(BIGSTR010, Chr(13) + Chr(10), "@ENTER@")
FPutLn 1, BIGSTR010
FClose 1
EndProc
;------------------------------------------------------------------------------
Procedure PROC012()
FCreate 1, STRING011, 1, 3
FPutLn 1, "Hold on!"
FClose 1
EndProc
;------------------------------------------------------------------------------
Procedure PROC013()
If (Exist(STRING011)) Delete STRING011
EndProc
;------------------------------------------------------------------------------
Procedure PROC014()
Color 15
Cls
AnsiPos 33, 11
Color 8
Gosub LABEL038
Color 7
Gosub LABEL038
Color 15
Gosub LABEL038
Color 7
Gosub LABEL038
Color 8
Gosub LABEL038
Color 15
Print " "
Goto LABEL039
:LABEL038
Print "<┤EGiS CoRP'94"
Delay 2
Backup 14
Return
:LABEL039
EndProc
;------------------------------------------------------------------------------
Function FUNCTION006(String STRING023) String
String STRING025
STRING008 = Upper(STRING023)
STRING008 = Replace(STRING008, "A", "a")
STRING008 = Replace(STRING008, "E", "e")
STRING008 = Replace(STRING008, "I", "i")
STRING008 = Replace(STRING008, "O", "o")
STRING008 = Replace(STRING008, "U", "u")
FUNCTION006 = STRING008
EndFunc
;------------------------------------------------------------------------------
Procedure PROC016(String STRING025)
STRING008 = STRING025
For WORD001 = 1 To INTEGER006
If (TWORD003(WORD001 - 1)) Then
INTEGER010 = WORD001
If (INTEGER010 == 10) INTEGER010 = 0
FCreate 2, PPEPath() + "WORK\PVT." + I2S(INTEGER010, 10), 1, 0
FPutLn 2, STRING008
FClose 2
Endif
Next
EndProc
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 8 End
; 2 Cls
; 2 ClrEol
; 1 Wait
; 12 Color
; 242 Goto
; 287 Let
; 18 Print
; 72 PrintLn
; 197 If
; 3 DispFile
; 10 FCreate
; 12 FOpen
; 15 FAppend
; 40 FClose
; 7 FGet
; 36 FPutLn
; 4 StartDisp
; 5 GetUser
; 29 Delete
; 1 InputInt
; 5 Gosub
; 2 Return
; 5 CdChkOn
; 4 CdChkOff
; 6 Delay
; 1 Inc
; 2 Call
; 2 Broadcast
; 10 RdUNet
; 4 WrUNet
; 83 AnsiPos
; 5 Backup
; 4 SaveScrn
; 4 RestScrn
; 1 Rename
; 8 FSeek
; 2 FRead
; 8 FWrite
; 2 Copy
; 1 Download
; 4 GetAltUser
; 16 EndProc
; 6 EndFunc
;
;
; ■ Functions used :
;
; 7 -
; 17 *
; 1 /
; 353 +
; 75 -
; 80 ==
; 19 <>
; 21 <
; 23 <=
; 11 >
; 36 >=
; 126 !
; 43 &&
; 25 ||
; 21 Len(
; 15 Upper()
; 24 Mid()
; 19 Left()
; 12 Right()
; 4 Space()
; 2 Ferr()
; 21 Chr()
; 2 Asc()
; 22 InStr()
; 2 Trim()
; 2 Date()
; 8 Time()
; 4 U_Name()
; 6 StripAtx()
; 5 Replace()
; 2 Inkey()
; 92 String()
; 98 PPEPath()
; 22 PcbNode()
; 12 ReadLine()
; 2 OnLocal()
; 10 UN_Name()
; 4 UN_City()
; 1 GetToken()
; 37 Exist()
; 6 I2S()
; 17 S2I()
; 2 CDOn()
; 4 GetX()
; 4 GetY()
; 1 FileInf()
; 2 MaxNode()
; 4 U_RecNum()
; 1 ScrText()
; 19 ReplaceStr()
; 4 ToWord()
; 3 Crc32()
; 23 PCBMac()
;
;------------------------------------------------------------------------------
;
; Analysis flags : RC
;
; R - Read user ■ 5
; User records are read, this may signify that someone wants to get
; various informations about a user (for example his password), but
; this may also be normal for a program accessing user records (for
; example a User Editor)
; ■ Search for : GETALTUSER
;
; C - Call child PPE ■ 3
; This is usually normal, but may be a tricky way to launch some
; sysop-only commands.
; ■ Search for : CALL
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 16 For/Next
; 4 While/EndWhile
; 85 If/Then or If/Then/Else
; 1 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------